import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class Test {
    public static void main4(String[] args) {
        Deque<Integer> deque=new LinkedList<>();//双端队列
        Queue<Integer> queue=new LinkedList<>();//普通队列'

    }
    public int evalRPN(String[] tokens){
        //建立栈空间
        Stack<Integer> stack=new Stack<>();
        //遍历String数组
        for (String x: tokens) {
            if (!isOperation(x)){//!false，是数字字符,进入该选择分支
                //数字入栈
                stack.push(Integer.parseInt(x));
            }else {//字符为运算符情况
                int num2=stack.pop();//第一个弹出的为数组数字字符中第二个操作数
                int num1=stack.pop();
                switch(x){//分类
                    case "+":
                        stack.push(num1+num2);//压栈
                        break;
                    case "-":
                        stack.push(num1-num2);
                        break;
                    case "*":
                        stack.push(num1*num2);//num1和num2顺序不能改
                        break;
                    case "/":
                        stack.push(num1/num2);
                        break;
                }
            }
        }
        return stack.pop();//返回栈中最后一个元素，因为栈中只剩一个元素
    }
    //判断是否为数字
    public boolean isOperation(String x){
        if (x.equals("+")||x.equals("-")||x.equals("*")||x.equals("/")){
            return true;
        }
        return false;//是数字字符
    }
    public static void main2(String[] args) {
        Stack<Integer> stack=new Stack<>();
        stack.push(1);//压栈，先进后出
        stack.push(2);
        stack.push(3);

        Integer a=stack.pop();
        System.out.println(a);//出栈

        Integer b=stack.peek();//出栈并返回栈
        System.out.println(b);

        //计算栈中有效个数
        System.out.println(stack.size());
        //判断是否为空
        boolean bo=stack.empty();
        System.out.println(bo);
    }
    public static void main1(String[] args) {
        //创造栈
        Stack<Integer> stack=new Stack<>();
        stack.push(1);//压栈，先进后出
        stack.push(2);
        stack.push(3);

        Integer a=stack.pop();
        System.out.println(a);//出栈

        Integer b=stack.peek();//出栈并返回栈
        System.out.println(b);

        //计算栈中有效个数
        System.out.println(stack.size());
        //判断是否为空
        boolean bo=stack.empty();
        System.out.println(bo);
    }

    public static void main3(String[] args) {
        MyCircularQueue myCircularQueue=new MyCircularQueue(8);
        myCircularQueue.enQueue(0);
        myCircularQueue.enQueue(1);
        myCircularQueue.enQueue(2);
        myCircularQueue.enQueue(3);
        myCircularQueue.enQueue(4);
        myCircularQueue.enQueue(5);
        myCircularQueue.enQueue(6);
        myCircularQueue.enQueue(7);
        System.out.println(myCircularQueue.Rear());
    }

    public static void main(String[] args) {

    }

}
